package com.smedi.ismedi.progress.core.port.adapter.persistence.model;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.smedi.ismedi.database.starter.model.BasicFieldEntity;
import com.smedi.ismedi.progress.api.dto.response.FileResponse;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.File;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 进度计划项目从表Entity类
 *
 * @author pengyan
 * @date 2022/09/16
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName(value = "project_schedule_detail")
public class ProgressDetailEntity extends BasicFieldEntity implements Serializable {
    /**
     * 主表id
     */
    private Long id;
    /**
     * 项目id
     */
    private Long projectId;
    /**
     * 类型(0、里程碑 1、关键任务  3、其他 4、一级任务 5、二级任务 6、三级任务 7、四级任务 8、五级任务)
     */
    private String type;
    /**
     * 任务名称前缀（序号）
     */
    private  String	namePrefix;
    /**
     * (任务/里程碑)名称
     */
    private String	name;
    /**
     * 计划开始时间
     */
    private LocalDateTime	scheduleStartTime;
    /**
     * 完成情况(0、未完成  1、完成)
     */
    private Integer  completion;
    /**
     * 计划完成时间
     */
    private LocalDateTime	scheduleEndTime;
    /**
     * 实际开始时间
     */
    private LocalDateTime	realStartTime;
    /**
     * 实际完成时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime	realEndTime;
    /**
     * 进度状态(0、滞后  1、正常)
     */
    private Integer	status;
    /**
     * 计划工期
     */
    private Integer	scheduleDuration;
    /**
     * 滞后时长
     */
    private Integer	lagTime;

    /**
     * 负责人
     */
    private String	responsiblePerson;
    /**
     * 照片url
     */
    private String	photoUrl;
    /**
     * 完成百分比
     */
    private String	percentage;
    /**
     * 父级id
     */

    private Long parentId;
    /**
     * 父级名称
     */

    private String parentName;

    /**
     * 项目列表id
     */
    private Long projectScheduleId;

    /**
     * 任务排序号
     */
    private Integer sortIndex;

    /**
     * 照片文件信息
     */
    @TableField(exist = false)
    private List<FileResponse> photoFile;

    /**
     * 0：不可编辑，1:编辑
     */
    private Integer editFlag;
}